package com.fang.excel.controller;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class FutureExample {
    public static void main(String[] args) {
        // 创建一个线程池
        ExecutorService executor = Executors.newFixedThreadPool(2);

        // 创建一个 Callable 任务
        Callable<String> callableTask = () -> {
            Thread.sleep(2000); // 模拟耗时操作
            return "任务完成";
        };

        // 提交任务并获取 Future 对象
        Future<String> future = executor.submit(callableTask);

        // 其他任务可以在这里执行
        System.out.println("主线程继续执行...");

        try {
            // 阻塞直到任务完成，获取结果
            String result = future.get();
            System.out.println("异步任务结果: " + result);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }

        // 关闭线程池
        executor.shutdown();
    }
}
